/**
 * Copyright (c) 2016-2019 人人开源 All rights reserved.
 *
 * https://www.renren.io
 *
 * 版权所有，侵权必究！
 */

package net.qunzhi.common.utils;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.math.BigDecimal;

/**
 * 常量
 *
 * @author Mark sunlightcs@gmail.com
 */
public class Constant {
	/** 超级管理员ID */
	public static final int SUPER_ADMIN = 1;
    /** 星联维护人员账号ID */
	public static final int XING_LIAN = 2;
    /**
     * 当前页码
     */
    public static final String PAGE = "page";
    /**
     * 每页显示记录数
     */
    public static final String LIMIT = "limit";
    /**
     * 排序字段
     */
    public static final String ORDER_FIELD = "sidx";
    /**
     * 排序方式
     */
    public static final String ORDER = "order";
    /**
     *  升序
     */
    public static final String ASC = "asc";


    public static final Integer ONE = 1;
    public static final Integer ZERO = 0;
	/**
	 * 菜单类型
	 * 
	 * @author chenshun
	 * @email sunlightcs@gmail.com
	 * @date 2016年11月15日 下午1:24:29
	 */
    public enum MenuType {
        /**
         * 目录
         */
    	CATALOG(0),
        /**
         * 菜单
         */
        MENU(1),
        /**
         * 按钮
         */
        BUTTON(2);

        private int value;

        MenuType(int value) {
            this.value = value;
        }

        public int getValue() {
            return value;
        }
    }
    
    /**
     * 定时任务状态
     * 
     * @author chenshun
     * @email sunlightcs@gmail.com
     * @date 2016年12月3日 上午12:07:22
     */
    public enum ScheduleStatus {
        /**
         * 正常
         */
    	NORMAL(0),
        /**
         * 暂停
         */
    	PAUSE(1);

        private int value;

        ScheduleStatus(int value) {
            this.value = value;
        }
        
        public int getValue() {
            return value;
        }
    }

    /**
     * 云服务商
     */
    public enum CloudService {
        /**
         * 七牛云
         */
        QINIU(1),
        /**
         * 阿里云
         */
        ALIYUN(2),
        /**
         * 腾讯云
         */
        QCLOUD(3);

        private int value;

        CloudService(int value) {
            this.value = value;
        }

        public int getValue() {
            return value;
        }
    }

    /**
     * 系统角色名称枚举类
     */
    @Getter
    @AllArgsConstructor
    public enum RoleName {
        /** 超级管理员role名称 */
        SUPER_ADMIN_ROLENAME("超级管理员"),
        ;

        private String roleName;
    }

    /**
     * 报警类型名称枚举类
     */
    @Getter
    @AllArgsConstructor
    public enum AlarmDescription {
        PRESS_UPPER("压力超过上限"),
        PRESS_LOWER("压力低于下限"),
        FLOW_UPPER("流量超过上限"),
        FLOW_LOWER("流量低于下限"),
        OUTAGE("泵站停电"),
        ;

        private String name;
    }

    /**
     * 设备爬取的状态
     */
    @Getter
    @AllArgsConstructor
    public enum EquipmentSpiderStatus {
        /**
         * 已爬取
         */
        DONE(1, "已爬取"),
        /**
         * 未爬取
         */
        NOT(0, "未爬取"),
        /**
         * 未全爬取
         */
        INCOMPLETE(2, "未完全爬取");

        private Integer code;
        private String value;

        public static String getNameByCode(Integer code) {
            for (var status : values()) {
                if (status.getCode().equals(code)) {
                    return status.getValue();
                }
            }
            return null;
        }
    }
    /**
     * 设备数据来源 类型：1调度中心爬取，2丹灶数据，3西江数据
     */
    @Getter
    @AllArgsConstructor
    public enum EquipmentType {
        /**
         * 0手抄
         */
        HAND(0, "手抄"),
        /**
         * 1调度中心爬取
         */
        SPIDER(1, "调度中心爬取"),
        /**
         * 2丹灶数据
         */
        DZ(2, "丹灶数据"),
        /**
         * 3西江数据
         */
        XJ(3, "西江数据");

        private Integer code;
        private String value;

        public static String getNameByCode(Integer code) {
            for (var status : values()) {
                if (status.getCode().equals(code)) {
                    return status.getValue();
                }
            }
            return null;
        }
    }

    /**
     * 设备电力状态：1绿灯，2红灯
     */
    @Getter
    @AllArgsConstructor
    public enum ElectricStatus {
        /**
         * 1绿灯
         */
        SPIDER(1, "绿灯", "images/dev_off.gif"),
        /**
         * 2红灯
         */
        DZ(2, "红灯", "images/dev_on.gif");

        private Integer code;
        private String value;
        private String imgName;

        public static String getNameByCode(Integer code) {
            for (var status : values()) {
                if (status.getCode().equals(code)) {
                    return status.getValue();
                }
            }
            return null;
        }

        public static Integer getCodeByImgName(String imgName) {
            for (var status : values()) {
                if (status.getImgName().equals(imgName)) {
                    return status.getCode();
                }
            }
            return null;
        }
    }

    /**
     * 爬取的类型
     */
    @Getter
    @AllArgsConstructor
    public enum SpiderType {
        /**
         * 压力
         */
        PRESSURE(1, "pressure"),
        /**
         * 流量
         */
        FLOW(0, "flow");

        private Integer code;
        private String value;

        public static String getNameByCode(Integer code) {
            for (var status : values()) {
                if (status.getCode().equals(code)) {
                    return status.getValue();
                }
            }
            return null;
        }
    }

    @Getter
    @AllArgsConstructor
    public enum MsgWxLogType{

        ALARM_MSG(0,"报警信息")
//        ,
//        DEVICE_MAINTAIN_MSG(1,"设备保养提醒消息"),
//        NOT_FINISHED_ORDER_MSG(2,"未处理工单提醒消息")
        ;

        private int value;
        private String desc;
    }

    public static Float bigDecimalToFloat(BigDecimal value) {
        if (null == value) {
            return null;
        }
        return value.floatValue();
    }

}
